2aaf1d
@@ -181,6 +181,10 @@
public class JavaParserClassOrInterfaceTypeDetailsBuilder implements Builder<Cla
 			}
 		}
 
+		List<ClassOrInterfaceType> implementsList;
+		List<AnnotationExpr> annotationsList = null;
+		List<BodyDeclaration> members = null;
+
 		if (clazz != null) {
 			List<ClassOrInterfaceType> extendsList = clazz.getExtends();
 			if (extendsList != null) {
@@ -203,6 +207,17 @@
public class JavaParserClassOrInterfaceTypeDetailsBuilder implements Builder<Cla
 					classOrInterfaceTypeDetailsBuilder.setSuperclass((ClassOrInterfaceTypeDetails) superPtm.getMemberHoldingTypeDetails());
 				}
 			}
+			
+			implementsList = clazz.getImplements();
+			if (implementsList != null) {
+				for (ClassOrInterfaceType candidate : implementsList) {
+					JavaType javaType = JavaParserUtils.getJavaTypeNow(compilationUnitServices, candidate, typeParameterNames);
+					classOrInterfaceTypeDetailsBuilder.addImplementsType(javaType);
+				}
+			}
+
+			annotationsList = typeDeclaration.getAnnotations();
+			members = clazz.getMembers();
 		}
 
 		if (enumClazz != null) {
@@ -212,17 +227,12 @@
public class JavaParserClassOrInterfaceTypeDetailsBuilder implements Builder<Cla
 					classOrInterfaceTypeDetailsBuilder.addEnumConstant(new JavaSymbolName(enumConstants.getName()));
 				}
 			}
-		}
 
-		List<ClassOrInterfaceType> implementsList = clazz == null ? enumClazz.getImplements() : clazz.getImplements();
-		if (implementsList != null) {
-			for (ClassOrInterfaceType candidate : implementsList) {
-				JavaType javaType = JavaParserUtils.getJavaTypeNow(compilationUnitServices, candidate, typeParameterNames);
-				classOrInterfaceTypeDetailsBuilder.addImplementsType(javaType);
-			}
+			implementsList = enumClazz.getImplements();
+			annotationsList = enumClazz.getAnnotations();
+			members = enumClazz.getMembers();
 		}
 
-		List<AnnotationExpr> annotationsList = clazz == null ? enumClazz.getAnnotations() : typeDeclaration.getAnnotations();
 		if (annotationsList != null) {
 			for (AnnotationExpr candidate : annotationsList) {
 				AnnotationMetadata md = JavaParserAnnotationMetadataBuilder.getInstance(candidate, compilationUnitServices).build();
@@ -230,8 +240,6 @@
public class JavaParserClassOrInterfaceTypeDetailsBuilder implements Builder<Cla
 			}
 		}
 
-		List<BodyDeclaration> members = clazz == null ? enumClazz.getMembers() : clazz.getMembers();
-
 		if (members != null) {
 			// Now we've finished declaring the type, we should introspect for any inner types that can thus be referred to in other body members
 			// We defer this until now because it's illegal to refer to an inner type in the signature of the enclosing type
